package pe.bf.extranet.ejb;

import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.sql.DataSource;

import oracle.jdbc.OracleTypes;
import pe.bf.base.types.OutParameter;
import pe.bf.domain.bean.Banco;
import pe.bf.domain.bean.Moneda;
import pe.bf.domain.bean.Transferencia;
import pe.bf.domain.constantes.Constantes;
import pe.bf.domain.exceptions.DomainException;
import pe.bf.extranet.dao.TransferenciaDAO;
import pe.bf.extranet.dao.impl.TransferenciaDAOImpl;
import pe.bf.extranet.dao.impl.UsuarioDAOImpl;

/**
 * Session Bean implementation class TransferenciaEJB
 */
@WebService
@Stateless
@LocalBean
public class TransferenciasEJB{

	
//	@Resource(mappedName=Constantes.JNDI_DATASOURCE)
	public DataSource dataSource;

    private TransferenciaDAO transferenciaDAO;
	
	/**
     * Default constructor.  
     */
    public TransferenciasEJB() {
        // TODO Auto-generated constructor stub
    }
    

    @WebMethod
	public boolean crearTrasferencia(Transferencia transferencia)  {
		try {
			transferenciaDAO.crearTrasferencia(transferencia); 
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

    @WebMethod
	public void aprobarTransferencia(Transferencia transferencia) {
		try {
			transferenciaDAO.aprobarTransferencia(transferencia); 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

    @WebMethod
	public void aprobarTransferenciaBatch(List<Transferencia> transferenciaList) { 
		try { 
			transferenciaDAO.aprobarTransferenciaBatch(transferenciaList);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

    @WebMethod
	public List<Transferencia> listarTranferenciaPorEmpresaPorEstado(Transferencia trans)   {
		 
		try {
			return transferenciaDAO.listarTranferenciaPorEmpresaPorEstado(trans);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} 
	}

    @WebMethod
	public List<Transferencia> listarTranferenciaPorEstado(Transferencia trans)  {
		List<Transferencia> lista = null;
		try {
			lista=transferenciaDAO.listarTranferenciaPorEstado(trans);
			return  lista;
		} catch (Exception e) {
			e.printStackTrace();
			return new ArrayList();
		}
		
	}
 
	@PostConstruct
	public void init() {
		transferenciaDAO = new TransferenciaDAOImpl(dataSource);
	}
}
